package de.mnit.basis.swt.element.steuer.rollbar.gruppe;

import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.ToolBar;

import de.mnit.basis.swt.element.S_SWT_Komponente;
import de.mnit.basis.swt.element.feld.werkzeug.A_SWT_WerkzeugFeldBasis;
import de.mnit.basis.swt.element.feld.werkzeug.SWT_WerkzeugElement;
import de.mnit.basis.swt.element.feld.werkzeug.SWT_WerkzeugTrenner;
import de.mnit.basis.swt.element.feld.werkzeug.knopf.SWT_WerkzeugSchalter;
import de.mnit.basis.swt.element.feld.werkzeug.knopf.SWT_WerkzeugTaster;

public class SWT_WerkzeugLeiste extends A_SWT_Gruppe<SWT_WerkzeugLeiste,ToolBar> {

	private final boolean vertikal_n_horizontal;


	public SWT_WerkzeugLeiste() {
		this(false);
	}

	public SWT_WerkzeugLeiste(boolean vertikal_n_horizontal) {
		this.vertikal_n_horizontal=vertikal_n_horizontal;
	}

	// FUNKTION

	/**
	 * WIN XP: Konnte keine Veränderung feststellen. Ist eigentlich immer flach
	 * LINUX:  Wird sonst schön erhoben dargestellt, so ists absolut plan, eben und langweilig
	 */
	public SWT_WerkzeugLeiste s1_Flach() {
		this.s1_Style(SWT.FLAT); return this;
	}

	/**
	 * WIN XP: Unter XP bekam die Leiste oben einen einfachen Rahmen und wirkt leicht erhöht. Allerdings werden Elemente abgeschnitten!
	 * LINUX:  Leiste hat einen Schatten und wirkt erhöht
	 */
	public SWT_WerkzeugLeiste s1_Schatten() {
		this.s1_Style(SWT.SHADOW_OUT);
		return this;
	}

	public SWT_WerkzeugLeiste s1_Zeilenumbruch() {
		this.s1_Style(SWT.WRAP);
		return this;
	}

	// NEU

	public SWT_WerkzeugTrenner  nFeldTrenner()                                                        { return iFeldNeu(new SWT_WerkzeugTrenner ()); }
	public SWT_WerkzeugElement  nFeldElement(S_SWT_Komponente<?, ? extends Composite> k)              { return iFeldNeu(new SWT_WerkzeugElement (k)); }
	public SWT_WerkzeugTaster   nFeldText(String text, String tip)                                    { return iFeldNeu(new SWT_WerkzeugTaster  (text,tip)); }
	public SWT_WerkzeugTaster   nFeldBild(Object bild, String tip)                                    { return iFeldNeu(new SWT_WerkzeugTaster  (bild,tip)); }
//	public SWT_WerkzeugDropDown nFeldMenueText(String text, String tip)                               { return iFeldNeu(new SWT_WerkzeugDropDown(text,tip)); }
//	public SWT_WerkzeugDropDown nFeldMenueBild(Object bild, String tip)                               { return iFeldNeu(new SWT_WerkzeugDropDown(bild,tip)); }
//	public SWT_WerkzeugAuswahl  nFeldAuswahlText(String text, String tip)                             { return iFeldNeu(new SWT_WerkzeugAuswahl (text,tip)); }
//	public SWT_WerkzeugAuswahl  nFeldAuswahlBild(Object bild, String tip)                             { return iFeldNeu(new SWT_WerkzeugAuswahl (bild,tip)); }
//	public SWT_WerkzeugBilder	nFeldBilder(Object[] bilder, String[] tips)				      	      { return iFeldNeu(new SWT_WerkzeugBilder  (bilder,tips)); }
	public SWT_WerkzeugSchalter nFeldSchalter(Object bild1, String tip1, Object bild2, String tip2)   { return iFeldNeu(new SWT_WerkzeugSchalter(bild1,tip1,bild2,tip2)); }
	public SWT_WerkzeugSchalter nFeldSchalter(Object bild, String tip)								  { return iFeldNeu(new SWT_WerkzeugSchalter(bild,tip,bild,tip)); }

	// ERZEUGEN

	protected int style5() {
		return vertikal_n_horizontal ? SWT.VERTICAL : SWT.HORIZONTAL;
	}

	protected ToolBar roh(Composite basis, int style) {
		return new ToolBar(basis,style);
	}

	protected void init5() {}

	// INTERN

	private <T extends A_SWT_WerkzeugFeldBasis<?>> T iFeldNeu(T feld) {
		feld.erzeugeSWT(this.swt());
		return feld;
	}

}